/** 
 * @date 06/05/2013
 * @author Renet_Pourriau
 * @version 1.0
 */

package temporel;

/**
 * This class represent hour
 */
public class Heure {

	private Integer horaire;

	private Integer minute;

	private Integer seconde;

	/**
	 * this is the constructor of hour
	 * @param horaire
	 *            >= 0 && < 24
	 * @param minute
	 *            >= 0 && < 60
	 * @param seconde
	 *            >=0 && < 60
	 */
	public Heure(Integer horaire, Integer minute, Integer seconde) {
		if (horaire >= 0 && horaire < 24 && minute >= 0 && minute < 60
				&& seconde >= 0 && seconde < 60) {
			this.setHoraire(horaire);
			this.setMinute(minute);
			this.setSeconde(seconde);
		}
	}

	/**
	 * @return the horaire
	 */
	public Integer getHoraire() {
		return horaire;
	}

	/**
	 * @param horaire
	 *            >= 0 && < 24 the horaire to set
	 */
	public void setHoraire(Integer horaire) {
		if (horaire >= 0 && horaire < 24) {
			this.horaire = horaire;
		}
	}

	/**
	 * @return the minute
	 */
	public Integer getMinute() {
		return minute;
	}

	/**
	 * @param minute
	 *            >= 0 && < 60 the minute to set
	 */
	public void setMinute(Integer minute) {
		if (minute >= 0 && minute < 60) {
			this.minute = minute;
		}
	}

	/**
	 * @return the seconde
	 */
	public Integer getSeconde() {
		return seconde;
	}

	/**
	 * @param seconde
	 *            >= 0 && < 60 the seconde to set
	 */
	public void setSeconde(Integer seconde) {
		if (seconde >= 0 && seconde < 60) {
			this.seconde = seconde;
		}
	}

	/**
	 * @return String representing hour in format "hh:mm:ss"
	 */
	public String getHeure() {
		if (this.getHoraire() == null || this.getMinute() == null || this.getSeconde() == null) {
			return null;
		} else {
			String minute = this.getMinute().toString();
			String seconde = this.getSeconde().toString();
			int lengthMinute = this.getMinute().toString().length();
			if (lengthMinute == 1) {
				minute = "0" + this.getMinute();
			}
			int lengthSeconde = this.getSeconde().toString().length();
			if (lengthSeconde == 1) {
				seconde = "0" + this.getSeconde();
			}
			return this.getHoraire() + ":" + minute + ":" + seconde;
		}
	}

	/**
	 * @param heure
	 * @return true if current hour is before parameter hour
	 */
	public boolean estAvant(Heure heure) {
		if (this.getHeure() != null && heure.getHeure() != null) {
			if (this.getHoraire() < heure.getHoraire()) {
				return true;
			} else if (this.getHoraire().equals(heure.getHoraire())) {
				if (this.getMinute() < heure.getMinute()) {
					return true;
				} else if (this.getMinute().equals(heure.getMinute()) && this.getSeconde() < heure.getSeconde()) {
					return true;
				}
			}
		}
		return false;
	}
	
	/**
	 * @param heure
	 * @return true if current hour is after parameter hour
	 */
	public boolean estApres(Heure heure) {
		if (this.getHeure() != null && heure.getHeure() != null) {
			if (this.getHoraire() > heure.getHoraire()) {
				return true;
			} else if (this.getHoraire().equals(heure.getHoraire())) {
				if (this.getMinute() > heure.getMinute()) {
					return true;
				} else if (this.getMinute().equals(heure.getMinute()) && this.getSeconde() > heure.getSeconde()) {
					return true;
				}
			}
		}
		return false;
	}

}